基于之前Hello World或者E2PROM的vivado工程,进行修改:
原理图如下:涉及到PS端的MIO引出的两个按键和两个LED、PS端EMIO引出的两个按键和两个LED,一个EMIO引出IO用于控制蜂鸣器。
配置PS端直接点击GPIO MIO,此时的引脚默认是全部选中的。我们要检测PS_KEY0对应MIO0,PS_KEY1对应MIO11。PS_LED0对应MIO7,PS_LED1对应MIO8。
需要设置为EMIO的IO有五个,分别对应两个按键、两个LED和一个蜂鸣器,所以在配置时选择5就行,选多的话在之后的引脚约束中必须也给多余的引脚配置约束:
点击OK,同样,右击GPIO_0点击Make External,软件会自动在顶层模块中自动生成与EMIO 接口对应的外部引脚:
接下来的步骤和IIC相同,只是在进行引脚约束时有所不同:在此我使用勾选的方法配置引脚约束,由原理图得到:
此时界面中的【0】、【1】、【2】、【3】、【4】分别对应着PL_KEY0、PL_KEY1、PL_LED0、PL_LED1、BEEP。
之后依次综合、实现、生成bitstream,最后生成新的.xsa文件:
在vitis里面平台工程更新一下:右击创建的平台工程,点击Update Hardware Specification:选择.xsa文件路径,出现以下弹框,点击OK,说明更新成功。平台工程会显示out of date,这时需要重新build平台工程。
同样,点击File-->new-->Application Project;
选择空的.c工程;
加入.c文件即可。
在程序中实现了四个按键分别控制四个指示灯,按键按下时,指示灯点亮,按键松开时,指示灯熄灭。
需要说明的是,MIO的引脚编号为053,EMIO的引脚编号从54开始。因为这次EMIO扩展了5个引脚,所以对应的编号为5458
x// PS key and LED pin definitions// PS LED0 pin: MIO7// PS LED1 pin: MIO8// PS KEY0 pin: MIO0// PS KEY1 pin: MIO11
// 0~53 is for MIO, EMIO starts from 54// EMIO pin definitions// EMIO KEY0 pin// EMIO KEY1 pin// EMIO LED0 pin// EMIO LED1 pin// EMIO BEEP pin编译工程成功后,用type-c USB线将开发板的JTAG和电脑连接,使用另外一根type-c USB线将开发板的PS UART和电脑连接。
在电脑上打开串口调试工具MobaXterm,和开发板的PS UART建立连接。
在vitis上进入调试模式:在Debug As,选择第一个。全速运行就可以通过串口看到调试信息,并且在开发板上可以看见相应的现象。
运行后,按下或抬起相应的按键,会在串口中打印相应的按键按下或抬起的信息,并且相应的指示灯会点亮或熄灭。